active(zeros) → mark(cons(0, zeros))
active(tail(cons(X, XS))) → mark(XS)
active(cons(X1, X2)) → cons(active(X1), X2)
active(tail(X)) → tail(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
tail(mark(X)) → mark(tail(X))
proper(zeros) → ok(zeros)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(tail(X)) → tail(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
tail(ok(X)) → ok(tail(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
↳ QTRS
↳ RRRPoloQTRSProof
active(zeros) → mark(cons(0, zeros))
active(tail(cons(X, XS))) → mark(XS)
active(cons(X1, X2)) → cons(active(X1), X2)
active(tail(X)) → tail(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
tail(mark(X)) → mark(tail(X))
proper(zeros) → ok(zeros)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(tail(X)) → tail(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
tail(ok(X)) → ok(tail(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
active(zeros) → mark(cons(0, zeros))
active(tail(cons(X, XS))) → mark(XS)
active(cons(X1, X2)) → cons(active(X1), X2)
active(tail(X)) → tail(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
tail(mark(X)) → mark(tail(X))
proper(zeros) → ok(zeros)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(tail(X)) → tail(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
tail(ok(X)) → ok(tail(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
Used ordering:
active(tail(cons(X, XS))) → mark(XS)
POL(0) = 0
POL(active(x1)) = x1
POL(cons(x1, x2)) = 2·x1 + 2·x2
POL(mark(x1)) = x1
POL(ok(x1)) = x1
POL(proper(x1)) = x1
POL(tail(x1)) = 2 + x1
POL(top(x1)) = 2·x1
POL(zeros) = 0
↳ QTRS
↳ RRRPoloQTRSProof
↳ QTRS
↳ DependencyPairsProof
active(zeros) → mark(cons(0, zeros))
active(cons(X1, X2)) → cons(active(X1), X2)
active(tail(X)) → tail(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
tail(mark(X)) → mark(tail(X))
proper(zeros) → ok(zeros)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(tail(X)) → tail(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
tail(ok(X)) → ok(tail(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
CONS(mark(X1), X2) → CONS(X1, X2)
PROPER(cons(X1, X2)) → CONS(proper(X1), proper(X2))
CONS(ok(X1), ok(X2)) → CONS(X1, X2)
TOP(mark(X)) → PROPER(X)
ACTIVE(cons(X1, X2)) → CONS(active(X1), X2)
PROPER(tail(X)) → TAIL(proper(X))
TAIL(mark(X)) → TAIL(X)
TOP(ok(X)) → ACTIVE(X)
PROPER(cons(X1, X2)) → PROPER(X1)
ACTIVE(zeros) → CONS(0, zeros)
PROPER(tail(X)) → PROPER(X)
TAIL(ok(X)) → TAIL(X)
PROPER(cons(X1, X2)) → PROPER(X2)
TOP(mark(X)) → TOP(proper(X))
ACTIVE(cons(X1, X2)) → ACTIVE(X1)
ACTIVE(tail(X)) → ACTIVE(X)
ACTIVE(tail(X)) → TAIL(active(X))
TOP(ok(X)) → TOP(active(X))
active(zeros) → mark(cons(0, zeros))
active(cons(X1, X2)) → cons(active(X1), X2)
active(tail(X)) → tail(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
tail(mark(X)) → mark(tail(X))
proper(zeros) → ok(zeros)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(tail(X)) → tail(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
tail(ok(X)) → ok(tail(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
↳ QTRS
↳ RRRPoloQTRSProof
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
CONS(mark(X1), X2) → CONS(X1, X2)
PROPER(cons(X1, X2)) → CONS(proper(X1), proper(X2))
CONS(ok(X1), ok(X2)) → CONS(X1, X2)
TOP(mark(X)) → PROPER(X)
ACTIVE(cons(X1, X2)) → CONS(active(X1), X2)
PROPER(tail(X)) → TAIL(proper(X))
TAIL(mark(X)) → TAIL(X)
TOP(ok(X)) → ACTIVE(X)
PROPER(cons(X1, X2)) → PROPER(X1)
ACTIVE(zeros) → CONS(0, zeros)
PROPER(tail(X)) → PROPER(X)
TAIL(ok(X)) → TAIL(X)
PROPER(cons(X1, X2)) → PROPER(X2)
TOP(mark(X)) → TOP(proper(X))
ACTIVE(cons(X1, X2)) → ACTIVE(X1)
ACTIVE(tail(X)) → ACTIVE(X)
ACTIVE(tail(X)) → TAIL(active(X))
TOP(ok(X)) → TOP(active(X))
active(zeros) → mark(cons(0, zeros))
active(cons(X1, X2)) → cons(active(X1), X2)
active(tail(X)) → tail(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
tail(mark(X)) → mark(tail(X))
proper(zeros) → ok(zeros)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(tail(X)) → tail(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
tail(ok(X)) → ok(tail(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
↳ QTRS
↳ RRRPoloQTRSProof
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QDP
↳ QDP
↳ QDP
TAIL(ok(X)) → TAIL(X)
TAIL(mark(X)) → TAIL(X)
active(zeros) → mark(cons(0, zeros))
active(cons(X1, X2)) → cons(active(X1), X2)
active(tail(X)) → tail(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
tail(mark(X)) → mark(tail(X))
proper(zeros) → ok(zeros)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(tail(X)) → tail(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
tail(ok(X)) → ok(tail(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
↳ QTRS
↳ RRRPoloQTRSProof
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QDPSizeChangeProof
↳ QDP
↳ QDP
↳ QDP
↳ QDP
TAIL(ok(X)) → TAIL(X)
TAIL(mark(X)) → TAIL(X)
From the DPs we obtained the following set of size-change graphs:
↳ QTRS
↳ RRRPoloQTRSProof
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QDP
↳ QDP
CONS(mark(X1), X2) → CONS(X1, X2)
CONS(ok(X1), ok(X2)) → CONS(X1, X2)
active(zeros) → mark(cons(0, zeros))
active(cons(X1, X2)) → cons(active(X1), X2)
active(tail(X)) → tail(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
tail(mark(X)) → mark(tail(X))
proper(zeros) → ok(zeros)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(tail(X)) → tail(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
tail(ok(X)) → ok(tail(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
↳ QTRS
↳ RRRPoloQTRSProof
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QDPSizeChangeProof
↳ QDP
↳ QDP
↳ QDP
CONS(mark(X1), X2) → CONS(X1, X2)
CONS(ok(X1), ok(X2)) → CONS(X1, X2)
From the DPs we obtained the following set of size-change graphs:
↳ QTRS
↳ RRRPoloQTRSProof
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QDP
PROPER(cons(X1, X2)) → PROPER(X1)
PROPER(tail(X)) → PROPER(X)
PROPER(cons(X1, X2)) → PROPER(X2)
active(zeros) → mark(cons(0, zeros))
active(cons(X1, X2)) → cons(active(X1), X2)
active(tail(X)) → tail(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
tail(mark(X)) → mark(tail(X))
proper(zeros) → ok(zeros)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(tail(X)) → tail(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
tail(ok(X)) → ok(tail(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
↳ QTRS
↳ RRRPoloQTRSProof
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QDPSizeChangeProof
↳ QDP
↳ QDP
PROPER(cons(X1, X2)) → PROPER(X1)
PROPER(tail(X)) → PROPER(X)
PROPER(cons(X1, X2)) → PROPER(X2)
From the DPs we obtained the following set of size-change graphs:
↳ QTRS
↳ RRRPoloQTRSProof
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
ACTIVE(cons(X1, X2)) → ACTIVE(X1)
ACTIVE(tail(X)) → ACTIVE(X)
active(zeros) → mark(cons(0, zeros))
active(cons(X1, X2)) → cons(active(X1), X2)
active(tail(X)) → tail(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
tail(mark(X)) → mark(tail(X))
proper(zeros) → ok(zeros)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(tail(X)) → tail(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
tail(ok(X)) → ok(tail(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
↳ QTRS
↳ RRRPoloQTRSProof
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QDPSizeChangeProof
↳ QDP
ACTIVE(cons(X1, X2)) → ACTIVE(X1)
ACTIVE(tail(X)) → ACTIVE(X)
From the DPs we obtained the following set of size-change graphs:
↳ QTRS
↳ RRRPoloQTRSProof
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
TOP(mark(X)) → TOP(proper(X))
TOP(ok(X)) → TOP(active(X))
active(zeros) → mark(cons(0, zeros))
active(cons(X1, X2)) → cons(active(X1), X2)
active(tail(X)) → tail(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
tail(mark(X)) → mark(tail(X))
proper(zeros) → ok(zeros)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(tail(X)) → tail(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
tail(ok(X)) → ok(tail(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
↳ QTRS
↳ RRRPoloQTRSProof
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QDPOrderProof
TOP(mark(X)) → TOP(proper(X))
TOP(ok(X)) → TOP(active(X))
active(zeros) → mark(cons(0, zeros))
active(cons(X1, X2)) → cons(active(X1), X2)
active(tail(X)) → tail(active(X))
tail(mark(X)) → mark(tail(X))
tail(ok(X)) → ok(tail(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
proper(zeros) → ok(zeros)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(tail(X)) → tail(proper(X))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
TOP(ok(X)) → TOP(active(X))
Used ordering: Polynomial interpretation [25]:
TOP(mark(X)) → TOP(proper(X))
POL(0) = 0
POL(TOP(x1)) = x1
POL(active(x1)) = x1
POL(cons(x1, x2)) = x1
POL(mark(x1)) = 1 + x1
POL(ok(x1)) = 1 + x1
POL(proper(x1)) = 1 + x1
POL(tail(x1)) = 1 + x1
POL(zeros) = 1
proper(tail(X)) → tail(proper(X))
proper(zeros) → ok(zeros)
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
proper(0) → ok(0)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
active(tail(X)) → tail(active(X))
tail(mark(X)) → mark(tail(X))
tail(ok(X)) → ok(tail(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
active(zeros) → mark(cons(0, zeros))
active(cons(X1, X2)) → cons(active(X1), X2)
↳ QTRS
↳ RRRPoloQTRSProof
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ UsableRulesProof
TOP(mark(X)) → TOP(proper(X))
active(zeros) → mark(cons(0, zeros))
active(cons(X1, X2)) → cons(active(X1), X2)
active(tail(X)) → tail(active(X))
tail(mark(X)) → mark(tail(X))
tail(ok(X)) → ok(tail(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
proper(zeros) → ok(zeros)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(tail(X)) → tail(proper(X))
↳ QTRS
↳ RRRPoloQTRSProof
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ RuleRemovalProof
TOP(mark(X)) → TOP(proper(X))
proper(zeros) → ok(zeros)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(tail(X)) → tail(proper(X))
tail(mark(X)) → mark(tail(X))
tail(ok(X)) → ok(tail(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
TOP(mark(X)) → TOP(proper(X))
tail(mark(X)) → mark(tail(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
POL(0) = 0
POL(TOP(x1)) = 2·x1
POL(cons(x1, x2)) = 2·x1 + 2·x2
POL(mark(x1)) = 2 + x1
POL(ok(x1)) = 2·x1
POL(proper(x1)) = x1
POL(tail(x1)) = 2·x1
POL(zeros) = 0
↳ QTRS
↳ RRRPoloQTRSProof
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ RuleRemovalProof
↳ QDP
↳ PisEmptyProof
proper(zeros) → ok(zeros)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(tail(X)) → tail(proper(X))
tail(ok(X)) → ok(tail(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))